home *** CD-ROM | disk | FTP | other *** search
File List | 1994-09-22 | 16.0 KB | 588 lines |
- '
- @prg_init
- @prg_defvar
- @prg_defconst
- @prg_rsc
- @prg_main
- @prg_exit
- '
- EDIT
- '
- '
- ' Liste der Procedures
- '
- > PROCEDURE font_get(fg_dev&,fg_ptr%)
- SWAP *fg_ptr%,fg_ptr$()
- LOCAL i&,a&,a$,fg_count&
- V~H=fg_dev&
- fg_count&=VST_LOAD_FONTS(0)+1
- '
- IF fg_count&=0
- ~FORM_ALERT(1,"[1][Es stehen keine|Zeichensätze zur Verfügung|für dieses Gerät!][Abbruch]")
- ELSE
- FOR i&=1 TO fg_count&
- a&=@vqt_name(fg_dev&,i&,a$)
- fg_ptr$(i&-1)=STR$(a&,5)+" "+LEFT$(a$,16)
- NEXT i&
- ENDIF
- '
- SWAP *fg_ptr%,fg_ptr$()
- RETURN
- > PROCEDURE font_size(d&,ptr%)
- LOCAL a&,b&,c&,dummy&
- SWAP *ptr%,ptr$()
- a&=32767
- CLR c&
- CLR b&
- DO
- b&=@vst_point(d&,a&,dummy&,dummy&,dummy&,dummy&) ! Fontgröße
- ptr$(c&)=STR$(b&,5) ! Wir zählen von oben nach unten,
- EXIT IF b&>a& ! da wir immer die nächst kleinere
- INC c& ! Größe zurückgeliefert bekommen!!!
- a&=b&
- DEC a&
- LOOP UNTIL c&=255
- '
- QSORT ptr$(),c&
- FOR a&=c& TO PRED(DIM?(ptr$()))
- ptr$(a&)=""
- NEXT a&
- '
- SWAP *ptr%,ptr$()
- RETURN
- '
- > PROCEDURE prg_defconst
- '
- ' Für FORM_DIAL()
- '
- fo_dbeg&=0
- fo_dgrw&=1
- fo_dshr&=2
- fo_dend&=3
- '
- LET tree1%=0 !RSC_TREE!
- LET tree2%=1 !RSC_TREE!
- LET tree3%=2 !RSC_TREE!
- LET tree4%=3 !RSC_TREE!
- LET t1_chrbx&=2 !Obj in #0
- LET t1_exit&=3 !Obj in #0
- LET t1_sty_a&=7 !Obj in #0
- LET t1_sty_f&=12 !Obj in #0
- LET t1_styl0&=14 !Obj in #0
- LET t1_styl5&=19 !Obj in #0
- LET t1_nameb&=23 !Obj in #0
- LET t1_names&=24 !Obj in #0
- LET t1_namet&=25 !Obj in #0
- LET t1_sizeb&=26 !Obj in #0
- LET t1_sizes&=27 !Obj in #0
- LET t1_sizet&=28 !Obj in #0
- LET t1_charb&=30 !Obj in #0
- LET t1_chart&=31 !Obj in #0
- LET t1_chars&=32 !Obj in #0
- LET t1_about&=34 !Obj in #0
- LET t2_txtbx&=1 !Obj in #1
- RETURN
- > PROCEDURE prg_defvar
- prg_path$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\"
- rsc_name$=prg_path$+"FONTSHOW.RSC"
- DIM font_name$(255),font_size$(255),extend&(7),font_char$(256)
- '
- draw!=TRUE
- font_size&=10
- font_style&=0
- pos_font&=0
- pos_size&=0
- '
- FOR i&=0 TO 222
- font_char$(i&)=CHR$(i&+1)+" "+CHR$(i&+33)
- NEXT i&
- RETURN
- > PROCEDURE prg_exit
- ~VST_UNLOAD_FONTS(0)
- ~RSRC_FREE()
- RESERVE
- RETURN
- > PROCEDURE prg_init
- IF GDOS?=FALSE
- ~FORM_ALERT(1,"[3][FONTSHOW |benötigt|GDOS!][ABBRUCH]")
- EDIT
- ENDIF
- RESERVE 40960
- handle_s&=V~H
- RETURN
- > PROCEDURE prg_main
- LOCAL pos&,back&,x&,y&,a&
- '
- ~FORM_DIAL(fo_dbeg&,0,0,0,0,t1_x&,t1_y&,t1_w&,t1_h&)
- ~FORM_DIAL(fo_dgrw&,0,0,0,0,t1_x&,t1_y&,t1_w&,t1_h&)
- ~OBJC_DRAW(tree4%,0,5,t4_x&,t4_y&,t4_w&,t4_h&)
- @font_get(handle_s&,*font_name$())
- font_name$=font_name$(0)
- pos_char&=65
- font_char$="Endlich GDOS!"
- '
- ~OBJC_DRAW(tree1%,0,5,t1_x&,t1_y&,t1_w&,t1_h&)
- ~GRAF_MOUSE(0,0)
- '
- DO
- '
- IF draw!
- @redraw(handle_s&)
- @font_size(handle_s&,*font_size$())
- draw!=FALSE
- ENDIF
- '
- back&=WORD(FORM_DO(tree1%,0))
- SELECT back&
- CASE t1_exit&
- prg_exit!=TRUE
- '
- CASE t1_names&
- ' Wenn man will, daß das Popupmenue immer bei Position 0 beginnt,
- ' muß man für pos_font& immer 0 übergeben!!
- @popup(tree2%,*font_name$(),pos_font&,font_name$,pos_font&)
- draw!=TRUE
- pos_size&=0 ! Muß zurückgesetzt werden, da Listenlänge anders sein kann
- '
- CASE t1_sizes&
- ~OBJC_OFFSET(tree1%,t1_sizeb&,x&,y&)
- OB_X(tree3%,0)=x&+OB_W(tree1%,t1_sizeb&)-OB_W(tree3%,0)
- OB_Y(tree3%,0)=y&+OB_H(tree1%,t1_sizeb&)+1
- '
- ' Wenn man will, daß das Popupmenue immer bei Position 0 beginnt,
- ' muß man für pos_size& immer 0 übergeben!!
- @popup(tree3%,*font_size$(),pos_size&,font_size$,pos_size&)
- draw!=TRUE
- '
- CASE t1_chars&
- ~OBJC_OFFSET(tree1%,t1_charb&,x&,y&)
- OB_X(tree3%,0)=x&+OB_W(tree1%,t1_charb&)-OB_W(tree3%,0)
- OB_Y(tree3%,0)=y&+OB_H(tree1%,t1_charb&)+1
- '
- @popup(tree3%,*font_char$(),pos_char&,font_char$,pos_char&)
- draw!=TRUE
- '
- CASE t1_styl0& TO t1_styl5&
- CLR font_style&
- OB_STATE(tree1%,back&-t1_styl0&+t1_sty_a&)=BCHG(OB_STATE(tree1%,back&-t1_styl0&+t1_sty_a&),1)
- ~OBJC_DRAW(tree1%,back&-t1_styl0&+t1_sty_a&,0,0,0,0,0)
- FOR a&=0 TO t1_sty_f&-t1_sty_a&
- IF BTST(OB_STATE(tree1%,a&+t1_sty_a&),1)=TRUE
- font_style&=BSET(font_style&,a&)
- ENDIF
- NEXT a&
- draw!=TRUE
- '
- ~EVNT_BUTTON(1,1,0)
- '
- CASE t1_sizet&,t1_chart&
- OB_FLAGS(tree1%,t1_exit&)=BCLR(OB_FLAGS(tree1%,t1_exit&),1)
- OB_FLAGS(tree1%,back&)=OB_FLAGS(tree1%,back&) XOR &X110
- ~FORM_DO(tree1%,back&)
- OB_STATE(tree1%,back&)=0
- IF back&=t1_sizet&
- font_size$=CHAR{{OB_SPEC(tree1%,back&)}}
- ELSE
- font_char$=CHAR{{OB_SPEC(tree1%,back&)}}
- ENDIF
- OB_FLAGS(tree1%,back&)=OB_FLAGS(tree1%,back&) XOR &X110
- OB_FLAGS(tree1%,t1_exit&)=BSET(OB_FLAGS(tree1%,t1_exit&),1)
- draw!=TRUE
- '
- CASE t1_about&
- GET t4_x&,t4_y&,t4_x&+t4_w&,t4_y&+t4_h&,get$
- ~OBJC_DRAW(tree4%,0,5,t4_x&,t4_y&,t4_w&,t4_h&)
- ~FORM_DO(tree4%,0)
- PUT t4_x&,t4_y&,get$
- '
- ENDSELECT
- '
- LOOP UNTIL prg_exit!=TRUE
- ~FORM_DIAL(fo_dshr&,0,0,0,0,t1_x&,t1_y&,t1_w&,t1_h&)
- ~FORM_DIAL(fo_dend&,0,0,0,0,t1_x&,t1_y&,t1_w&,t1_h&)
- RETURN
- > PROCEDURE prg_rsc
- LOCAL x&,y&
- IF RSRC_LOAD(rsc_name$)=0
- ~FORM_ALERT(1,"[3][Konnte |"+RIGHT$(rsc_name$,30)+"|nicht finden!][ABBRUCH]")
- RESERVE
- EDIT
- ENDIF
- '
- ~RSRC_GADDR(0,tree1%,tree1%)
- ~RSRC_GADDR(0,tree2%,tree2%)
- ~RSRC_GADDR(0,tree3%,tree3%)
- ~RSRC_GADDR(0,tree4%,tree4%)
- '
- ~FORM_CENTER(tree1%,t1_x&,t1_y&,t1_w&,t1_h&)
- SUB t1_x&,2 ! Ist notwendig, da Mutterobjekt schattiert ist!!
- SUB t1_y&,2
- ADD t1_w&,4
- ADD t1_h&,4
- '
- ~FORM_CENTER(tree4%,t4_x&,t4_y&,t4_w&,t4_h&)
- SUB t4_x&,2 ! Ist notwendig, da Mutterobjekt schattiert ist!!
- SUB t4_y&,2
- ADD t4_w&,4
- ADD t4_h&,4
- '
- ~OBJC_OFFSET(tree1%,t1_nameb&,x&,y&)
- OB_X(tree2%,0)=x&
- OB_Y(tree2%,0)=y&+OB_H(tree1%,t1_nameb&)+1
- '
- RETURN
- '
- PROCEDURE popup(pp_tree%,pp_field%,pp_posin&,VAR pp_string$,pp_posout&)
- '
- ' Adresse des Objektbaums pp_tree%
- ' Objekt, mit dem nach oben gescrollt werden soll pp_up&
- ' Objekt, mit dem nach unten gescrollt werden soll pp_dn&
- ' Slider-Objekt pp_ib&
- ' Mutterobjekt der Textobjekte pp_txtbx&
- ' Erstes Textobjekt des Scroll-Menues pp_txt0&
- ' Letztes Textobjekt des Scroll-Menues pp_txt9&
- ' Zeiger auf Stringfeld, das angezeigt werden soll pp_field%
- ' Anzahl der tatsächlichen Einträge pp_count&
- ' Maximale Anzahl der Einträge pp_max&
- ' Elter-Objekt, das alle Texcteinträge enthält pp_txtbx&
- ' Elter-Objekt, das die Slider & Pfeile enthält pp_scrbx&
- ' Textinhalt des String-Objektes, das ausgewählt wurde pp_string$
- ' Anzahl der Texteinträge pp_txt&
- '
- '
- LOCAL a$,a&,b&,c&,d&,pp_tx&,pp_ty&,pp_tw&,pp_th&,exit!,back&
- LOCAL pp_a&,pp_pos&,pp_sel!,pp_up&,pp_dn&,pp_txt0&,pp_txt9&
- LOCAL pp_scrbx&,pp_txtbx&,pp_count&,pp_max&,pp_txt&,pp_ib&,pp_ob&
- '
- '
- pp_txtbx&=OB_HEAD(pp_tree%,0) ! Textbox im Objektbaum ermitteln
- pp_scrbx&=OB_TAIL(pp_tree%,0) ! Scrollbox -""-
- pp_up&=OB_HEAD(pp_tree%,pp_scrbx&) ! Erstes Textobjekt
- pp_ob&=pp_up&+1
- pp_ib&=OB_HEAD(pp_tree%,pp_ob&)
- pp_dn&=OB_TAIL(pp_tree%,pp_scrbx&) ! Letztes Textobjekt
- pp_txt0&=OB_HEAD(pp_tree%,pp_txtbx&) ! Pfeil hoch
- pp_txt9&=OB_TAIL(pp_tree%,pp_txtbx&) ! Pfeil runter
- pp_txt&=pp_txt9&-pp_txt0&+1
- '
- SWAP *pp_field%,pp_field$() ! Feld zuweisen
- pp_max&=DIM?(pp_field$())
- '
- DO UNTIL pp_field$(pp_count&)=""
- INC pp_count&
- LOOP WHILE pp_count&<pp_max&
- '
- a&=MAX(pp_count&,pp_txt&)
- a&=OB_H(pp_tree%,pp_ob&)*(pp_txt&)/a&
- a&=MAX(OB_W(pp_tree%,pp_ib&),a&)
- OB_H(pp_tree%,pp_ib&)=a&
- '
- pp_tx&=OB_X(pp_tree%,0) ! Ausmaße ermitteln...
- pp_ty&=OB_Y(pp_tree%,0)
- pp_tw&=OB_W(pp_tree%,0)
- pp_th&=OB_H(pp_tree%,0)
- '
- SUB pp_tx&,2 ! Ist notwendig, da Mutterobjekt schattiert ist!!
- SUB pp_ty&,2 ! dto.
- ADD pp_tw&,6 ! dto.
- ADD pp_th&,6 ! dto.
- '
- pp_pos&=pp_posin&
- '
- FOR a&=0 TO MIN(pp_txt&-1,pp_count&-1) ! Wir weisen Strings zu
- OB_FLAGS(pp_tree%,a&+pp_txt0&)=BSET(OB_FLAGS(pp_tree%,a&+pp_txt0&),6) !Touchexit
- CHAR{OB_SPEC(pp_tree%,a&+pp_txt0&)}=pp_field$(a&+pp_pos&)
- NEXT a&
- '
- IF pp_count&<=pp_txt&
- '
- FOR a&=pp_count& TO pp_txt&-1
- OB_FLAGS(pp_tree%,a&+pp_txt0&)=BCLR(OB_FLAGS(pp_tree%,a&+pp_txt0&),6)
- CHAR{OB_SPEC(pp_tree%,a&+pp_txt0&)}="" ! Da wo nix ist, wird auch nix
- NEXT a& ! reingeschrieben
- '
- ENDIF
- '
- GET pp_tx&,pp_ty&,pp_tx&+pp_tw&,pp_ty&+pp_th&,a$ ! Wir merken uns den Hintergrund!
- pp_sel!=TRUE
- '
- ~OBJC_DRAW(pp_tree%,0,0,pp_tx&,pp_ty&,pp_tw&,pp_th&)
- ~OBJC_DRAW(pp_tree%,pp_up&,0,0,0,0,0)
- ~OBJC_DRAW(pp_tree%,pp_dn&,0,0,0,0,0)
- DO
- '
- IF pp_sel!=TRUE ! Wenn neu gezeichnet werden soll...
- '
- IF pp_pos&=0
- OB_FLAGS(pp_tree%,pp_up&)=BCLR(OB_FLAGS(pp_tree%,pp_up&),6)
- ELSE
- OB_FLAGS(pp_tree%,pp_up&)=BSET(OB_FLAGS(pp_tree%,pp_up&),6)
- ENDIF
- '
- IF pp_pos&=pp_count&-pp_txt& OR pp_count&<pp_txt&
- OB_FLAGS(pp_tree%,pp_dn&)=BCLR(OB_FLAGS(pp_tree%,pp_dn&),6)
- ELSE
- OB_FLAGS(pp_tree%,pp_dn&)=BSET(OB_FLAGS(pp_tree%,pp_dn&),6)
- ENDIF
- '
- IF pp_count&>pp_txt& ! Ist notwendig, da sonst
- ' ! Division durch Null stattfinden
- ' ! könnte!
- OB_Y(pp_tree%,pp_ib&)=(OB_H(pp_tree%,pp_ob&)-OB_H(pp_tree%,pp_ib&))*pp_pos&/(pp_count&-pp_txt&)
- ELSE
- OB_Y(pp_tree%,pp_ib&)=0
- ENDIF
- '
- FOR a&=pp_txt0& TO pp_txt9&
- CHAR{OB_SPEC(pp_tree%,a&)}=pp_field$(pp_pos&+a&-pp_txt0&)
- NEXT a&
- ~OBJC_DRAW(pp_tree%,pp_txtbx&,1,0,0,0,0)
- ~OBJC_DRAW(pp_tree%,pp_ob&,1,0,0,0,0)
- pp_sel!=FALSE
- '
- ENDIF
- '
- back&=BYTE(FORM_DO(pp_tree%,0))
- '
- SELECT back&
- CASE pp_up& ! Einen Eintrag zurückblättern
- pp_sel!=TRUE ! Befehl zum Neuzeichnen
- DEC pp_pos&
- '
- CASE pp_dn& ! Einen Eintrag vorblättern
- pp_sel!=TRUE ! Befehl zum Neuzeichnen
- INC pp_pos&
- '
- CASE pp_ib&
- '
- IF pp_count&>pp_txt& ! Relativ Positionieren...
- a&=GRAF_SLIDEBOX(pp_tree%,pp_ob&,pp_ib&,1) ! Slidebox aktivieren
- a&=a&/1000*(pp_count&-pp_txt&) ! und auswerten
- IF NOT a&=pp_pos&
- pp_sel!=TRUE
- pp_pos&=a&
- ENDIF
- ENDIF
- '
- CASE pp_txt0& TO pp_txt9&
- exit!=TRUE ! Wenn angewählt, nix wie raus aus dem Dialog
- pp_string$=CHAR{OB_SPEC(pp_tree%,back&)}
- '
- CASE pp_ob&
- ~OBJC_OFFSET(pp_tree%,pp_ib&,a&,b&)
- ~OBJC_OFFSET(pp_tree%,pp_ob&,c&,d&)
- w&=OB_W(pp_tree%,pp_ob&)
- h&=OB_H(pp_tree%,pp_ob&)
- ~EVNT_BUTTON(0,0,0,x&,y&,k&,s&)
- IF y&<b&
- IF pp_pos&>pp_txt&+1
- SUB pp_pos&,pp_txt&-1
- ELSE
- pp_pos&=0
- ENDIF
- ELSE
- IF pp_pos&>pp_count&-2*pp_txt&
- pp_pos&=pp_count&-pp_txt&
- ELSE
- ADD pp_pos&,pp_txt&-1
- ENDIF
- ENDIF
- pp_sel!=TRUE
- '
- ENDSELECT
- '
- LOOP UNTIL exit!=TRUE ! Wollen wir den Dialog beenden?
- PUT pp_tx&,pp_ty&,a$ ! Bildschirm wieder hinzeichnen
- SWAP *pp_field%,pp_field$() ! Feld mit Feldzeiger wieder zurücktauschen
- ' ! darf nicht vergessen werden
- pp_posout&=pp_pos& ! Neue Position übergeben
- RETURN
- '
- > PROCEDURE redraw(r_handle&)
- LOCAL width&,height&,x&,y&,tx&,ty&,tw&,th&
- '
- font_id&=VAL(LEFT$(font_name$,5))
- ~@vst_font(r_handle&,font_id&)
- font_size&=MIN(VAL(font_size$),32767) ! Wir haben nur Wortgröße!!!!
- font_size&=@vst_point(r_handle&,font_size&,dummy&,dummy&,dummy&,dummy&) ! Fontgröße
- ~@vst_rotation(r_handle&,0) ! Fontlage
- ~@vst_effects(r_handle&,font_style&) ! Fontstil
- @vqt_extend(r_handle&,font_char$,*extend&()) ! Zeichenmaße
- width&=MAX(extend&(2),extend&(4))-MIN(extend&(6),extend&(0)) ! Zeichenbreite
- height&=MAX(extend&(3),extend&(5))-MIN(extend&(7),extend&(1)) ! Zeichenhoehe
- '
- ~OBJC_OFFSET(tree1%,t1_chrbx&,x&,y&)
- w&=OB_W(tree1%,t1_chrbx&)
- h&=OB_H(tree1%,t1_chrbx&)
- ~OBJC_DRAW(tree1%,t1_chrbx&,0,0,0,0,0)
- '
- CHAR{{OB_SPEC(tree1%,t1_namet&)}}=font_name$ ! Fontname
- CHAR{{OB_SPEC(tree1%,t1_sizet&)}}=STR$(font_size&,5)
- CHAR{{OB_SPEC(tree1%,t1_chart&)}}=font_char$
- ~OBJC_DRAW(tree1%,t1_namet&,0,0,0,0,0)
- ~OBJC_DRAW(tree1%,t1_sizet&,0,0,0,0,0)
- ~OBJC_DRAW(tree1%,t1_chart&,0,0,0,0,0)
- '
- @vst_alignment(r_handle&,1,3,dummy&,dummy&)
- ~@vswr_mode(r_handle&,0)
- '
- '
- CLIP x&+4,y&+4,w&-8,h&-8
- '
- ADD x&,(OB_W(tree1%,t1_chrbx&)/2)
- ADD y&,(OB_H(tree1%,t1_chrbx&)/2)
- ADD y&,(height&/2)
- '
- @v_justified(r_handle&,x&,y&,font_char$,width&,0,0)
- '
- RETURN
- '
- '
- ' ====== VDI-Prozeduren & -Funktionen ======================================
- '
- > PROCEDURE v_justified(handle&,x&,y&,string$,length&,word_space&,char_space&)
- LOCAL n&,string%,i&
- '
- INTIN(0)=word_space&
- INTIN(1)=char_space&
- '
- n&=LEN(string$)
- string%=V:string$
- '
- FOR i&=0 TO n&
- INTIN(i&+2)=BYTE{string%+i&}
- NEXT i&
- '
- CONTRL(1)=2
- CONTRL(2)=0
- CONTRL(3)=n&+2
- CONTRL(4)=0
- CONTRL(5)=10
- CONTRL(6)=handle&
- '
- PTSIN(0)=x&
- PTSIN(1)=y&
- PTSIN(2)=length&
- PTSIN(3)=0
- '
- VDISYS 11
- RETURN
- '
- FUNCTION vswr_mode(handle&,mode&) ! SET WRITING MODE
- INTIN(0)=mode& ! 0=Replace, 1=Transparent, 3=XOR, 4=reverse Transparent
- CONTRL(1)=0
- CONTRL(2)=0
- CONTRL(3)=1
- CONTRL(6)=handle&
- VDISYS 32
- RETURN INTOUT(0)
- ENDFUNC
- '
- FUNCTION vst_point(handle&,point&,VAR char_width&,char_height&,cell_width&,cell_height&)
- PTSIN(0)=0
- PTSIN(1)=point&
- CONTRL(1)=0
- CONTRL(2)=2
- CONTRL(3)=1
- CONTRL(4)=1
- CONTRL(6)=handle&
- '
- INTIN(0)=point&
- '
- VDISYS 107
- '
- char_width&=PTSOUT(0)
- char_height&=PTSOUT(1)
- cell_width&=PTSOUT(2)
- cell_height&=PTSOUT(3)
- RETURN INTOUT(0)
- ENDFUNC
- '
- FUNCTION vst_effects(handle&,effect&)
- INTIN(0)=effect&
- CONTRL(1)=0
- CONTRL(3)=1
- CONTRL(6)=handle&
- VDISYS 106
- RETURN INTOUT(0)
- ENDFUNC
- '
- FUNCTION vst_font(handle&,font&)
- INTIN(0)=font&
- CONTRL(1)=0
- CONTRL(3)=1
- CONTRL(6)=handle&
- VDISYS 21
- RETURN INTOUT(0)
- ENDFUNC
- '
- FUNCTION vst_rotation(handle&,angle&)
- INTIN(0)=angle&
- CONTRL(1)=0
- CONTRL(3)=1
- CONTRL(6)=handle&
- VDISYS 13
- RETURN INTOUT(0)
- ENDFUNC
- '
- > PROCEDURE vst_alignment(handle&,hor_in&,vert_in&,VAR hor_out&,vert_out&)
- INTIN(0)=hor_in&
- INTIN(1)=vert_in&
- CONTRL(1)=0
- CONTRL(2)=0
- CONTRL(3)=2
- CONTRL(4)=2
- CONTRL(6)=handle&
- VDISYS 39
- hor_out&=INTOUT(0)
- vert_out&=INTOUT(1)
- RETURN
- > PROCEDURE vqt_extend(handle&,string$,extend%)
- LOCAL a&,string%,n&
- n&=LEN(string$)
- string%=V:string$
- SWAP *extend%,a&()
- '
- CONTRL(1)=0
- CONTRL(2)=4
- CONTRL(3)=LEN(string$)
- CONTRL(4)=0
- CONTRL(6)=handle&
- '
- '
- FOR i&=0 TO n&
- INTIN(i&+2)=BYTE{string%+i&}
- NEXT i&
- '
- VDISYS 116
- '
- FOR a&=0 TO 7
- a&(a&)=PTSOUT(a&)
- NEXT a&
- SWAP *extend%,a&()
- '
- RETURN
- '
- FUNCTION vqt_name(handle&,element_num&,VAR n.ame$)
- LOCAL i&
- '
- INTIN(0)=element_num&
- CONTRL(1)=0
- CONTRL(3)=1
- CONTRL(6)=handle&
- VDISYS 130
- '
- n.ame$=""
- i&=1
- DO UNTIL INTOUT(i&)=0
- n.ame$=n.ame$+CHR$(INTOUT(i&))
- INC i&
- LOOP
- RETURN INTOUT(0)
- ENDFUNC
- '
- > PROCEDURE prog
- CHDRIVE "f:"
- CHDIR "\prog\gfa\fontshow"
- RETURN
-